Quantum information processing manipulates quantum states rather than conventional 0-1 bits. It has been demonstrated with a variety of physical technologies (NMR, ion traps, Josephson junctions in superconductors, optics, etc.) and used in recently developed commercial products. Algorithms such as Shor's factoring algorithm and Grover's search algorithm apply the principles of quantum information to carry out certain computations asymptotically more efficiently than classical computers. Quantum computers hold great potential for complex computations in computational chemistry, biology, medicine, physics, and other fields. These developments have fueled research efforts to design, build and program scalable quantum computers. Due to the high volatility of quantum information, quantum error-correcting codes and effective fault-tolerant architectures are necessary to build reliable quantum computers. Most quantum algorithms are described in terms of quantum circuits and, similar to conventional digital circuits, require functional simulation to determine the best fault-tolerant design choices given limited resources. In particular, high-performance simulation is a key component in quantum design that facilitates analysis of trade-offs between performance and accuracy.
Simulating quantum circuits on a classical computer is a difficult problem. The matrices representing quantum gates, and the vectors that model quantum states grow exponentially with an increase in the number of qubits the quantum analogue of the classical computing bit. Several software packages have been developed for quantum circuit simulation including Oemer's Quantum Computation Language (QCL) and Viamontes' Quantum Information Decision Diagrams (QuIDD) implemented in the QuIDDPro package. While QCL simulates circuits directly using state vectors, QuIDDPro uses a variant of binary decision diagrams to store state vectors more compactly in some cases. Since the state-vector representation requires excessive computational resources in general, simulation-based reliability studies (e.g. fault injection analysis) of quantum fault-tolerant architectures using general-purpose simulators has been limited to small quantum circuits. Although certain stabilizer circuits have been identified and can be efficiently simulated on classical computers, the stabilizer circuits are of limited use. Stabilizer circuits must contain only stabilizer gates, which do not form a universal set for quantum computation. Therefore, stabilizer circuits alone do not permit efficient simulation of general quantum circuits.